1.HDFS
master/slave 主从架构
NameNode1(nn1) active
NameNode2(nn2) standby
命名空间:挂载着nn1 nn2,读写操作是直接通过命名空间操作的 hdfs://nameservice1/…
1.2.架构
HA架构图
说明
1.HA使用active NN,standby NN两个节点解决单点问题
2.两个NN节点通过JN集群,共享状态
3.通过ZKFC选举active,监控状态,自动备援
4.DN会同时向两个节点(active/standby)发送心跳
Active NN
1.接受client的rpc请求并处理,同时自己editlog写一份,也向JN的共享存储上的editlog写一份
2.接受DN的block report,block location updates 和 heartbeatStandby NN
1.接受DN的block report,block location updates 和 heartbeat
2.接受到从JN的editlog上读取并执行这些log的操作,使自己的NN的元数据和active NN的元数据是同步的,所以说standby是active NN的热备。一旦切换为active状态,就能够立即对外提供服务Journal Node
1.用于active NN,standby NN的同步数据,本身有一组JN节点组成的集群,奇数 三台起步
2.支持Paxos协议,保证高可用ZKFC
1.进程(区别于yarn的zkfc)
2.监控NN的健康状态
3.向ZK集群定期发送心跳,让自己被选举,当自己被ZK选举为主时,ZKFC进程通过rpc调用让nn转换为active状态
1.3.部署
机器 | 进程 | 进程 | 进程 | 进程 | 进程 |
---|---|---|---|---|---|
hadoop001 | ZK | NN | ZKFC | JN | DN |
hadoop002 | ZK | NN | ZKFC | JN | DN |
hadoop003 | ZK | JN | DN |
NN -> NameNode
ZKFC -> ZookeeperFailoverControl
JN -> JournalNode
DN -> DataNode
做HDFS HA就不存在Secondary NameNode
生产实践
JournalNode 至少3台 2n+1
zk:2n+1
zk部署台数最佳实践如下:
小于20节点:5台
20~100节点:7/9/11台
大于100节点:11台
ZK 最好是单独机器部署
2.YARN
resource-manager(rm)/node-manager(nm)
主从架构
resource-manager1(rm1) active
resource-manager2(rm2) standby
2.1.架构图
HA架构图
说明
RM (resource manager)
1.启动时会通过向ZK的/hadoop-ha目录写一个lock文件,写成功则为active,否则为standby
standby RM会一直监控lock文件是否存在,如果不存在就会尝试创建,争取为active
2.接受客户端的任务请求,接受和监控NM的资源的汇报,负责资源的分配与调度,
3.启动和监控 ApplicationMaster(AM)NM (Node Manager)
1.节点上的资源的管理
2.启动container容器,运行task的计算
3.上报资源,container情况汇报给RM和任务的处理情况给 ApplicationMaster(AM)
4.只会向active RM发送心跳AM (Application Master)
1.单个application(job)的task的管理和调度
2.向RM进行资源的申请,向NM发送 lanuch container指令
3.接受NM的task的处理状态信息 (比如运行了百分之多少了)
4.运行在NodeManager机器上的container 而不是运行在ResourceManager机器上RMstatestore
1.RM的作业信息存储在ZK的/rmstore下,active RM向这个目录写application信息
2.当active RM挂了,另外一个standby RM成功转换为active RM,会从/rmstore读取相应的作业信息,重新构建作业的内存信息,然后开启内部服务,开始接受NM心跳,构建集群资源的信息,并接受客户端的申请资源的请求ZKFC
1.自动故障转移
2.只作为RM进程中的一个线程,而非独立的守护进程来启动 ★ 该点区别于HDFS的ZKFC
2.2.部署
机器 | 进程 | 进程 | 进程 | 进程 | 进程 | 进程 | 进程 |
---|---|---|---|---|---|---|---|
hadoop001 | ZK | NN | ZKFC | JN | DN | RM | NM |
hadoop002 | ZK | NN | ZKFC | JN | DN | RM | NM |
hadoop003 | ZK | JN | DN | NM |
DN NM 部署在同一个机器上 —> 数据本地化
- 本文作者: cll
- 本文链接: https://keeponcoding.github.io/2018/01/15/HDFS-YARN HA架构及组件详解/
- 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!